package com.loyi.cloud.hbsystem.cqi.utils;

import org.apache.commons.lang3.ArrayUtils;

/**
 * 综合质量指数计算类
 * 
 * @author Administrator
 * 
 */
public class CQIHelper {

	final static int[] codes = new int[] { 0x0402, 0x0404, 0x0467, 0x0D71, 0x0486, 0x048A };
	final static float[] limits = new float[] { 0.06f, // SO2
			4.0f, // CO
			0.04f, // NO2
			0.160f, // O3
			0.070f, // PM10
			0.035f // PM2.5
	};

	private static int getIndex(String pollcode) {
		int code = Integer.parseInt(pollcode, 16);
		return ArrayUtils.indexOf(codes, code & 0x0FFF);
	}

	public static float getLimit(String pollcode) {
		int index = getIndex(pollcode);
		if (index >= 0 && index < limits.length) {
			return limits[index];
		}
		return 0.0f;
	}

	/**
	 * 根据污染物浓度值计算综合质量指数
	 * 
	 * @param pollcode
	 * @param value
	 * @param type
	 *            0=小时，1=日，2=周，3=月，4=季度，5=年
	 * @return
	 */
	public static float getCQI(String pollcode, float value) {
		float limit = getLimit(pollcode);
		if (limit > 0) {
			return ((int) (value / limit * 100)) / 100.0f;
		}
		return 0.0f;
	}

}
